#include "test_list.h"


#ifdef TEST_VARIANT_COMPARE

#include "disable_warning.h"

#include "tools/variant.h"

#define TEST_VARIANT_COMPARE_000
#define TEST_VARIANT_COMPARE_001
#define TEST_VARIANT_COMPARE_002
#define TEST_VARIANT_COMPARE_003
#define TEST_VARIANT_COMPARE_004
#define TEST_VARIANT_COMPARE_005
#define TEST_VARIANT_COMPARE_006
#define TEST_VARIANT_COMPARE_007
#define TEST_VARIANT_COMPARE_008
#define TEST_VARIANT_COMPARE_009
#define TEST_VARIANT_COMPARE_010
#define TEST_VARIANT_COMPARE_011
#define TEST_VARIANT_COMPARE_012
#define TEST_VARIANT_COMPARE_013
#define TEST_VARIANT_COMPARE_014
#define TEST_VARIANT_COMPARE_015
#define TEST_VARIANT_COMPARE_016
#define TEST_VARIANT_COMPARE_017
#define TEST_VARIANT_COMPARE_018
#define TEST_VARIANT_COMPARE_019
#define TEST_VARIANT_COMPARE_020
#define TEST_VARIANT_COMPARE_021
#define TEST_VARIANT_COMPARE_022
#define TEST_VARIANT_COMPARE_023
#define TEST_VARIANT_COMPARE_024
#define TEST_VARIANT_COMPARE_025
#define TEST_VARIANT_COMPARE_026
#define TEST_VARIANT_COMPARE_027
#define TEST_VARIANT_COMPARE_028
#define TEST_VARIANT_COMPARE_029
#define TEST_VARIANT_COMPARE_030
#define TEST_VARIANT_COMPARE_031
#define TEST_VARIANT_COMPARE_032

using namespace variant_detail;

//------------------------------------------------------------------------------------------------------//
namespace{

    typedef variant_detail::V::I8         I8;
    typedef variant_detail::V::I16        I16;
    typedef variant_detail::V::I32        I32;
    typedef variant_detail::V::I64        I64;
    typedef variant_detail::V::U8         U8;
    typedef variant_detail::V::U16        U16;
    typedef variant_detail::V::U32        U32;
    typedef variant_detail::V::U64        U64;
    typedef variant_detail::V::F32        F32;
    typedef variant_detail::V::F64        F64;
    typedef variant_detail::V::Byte       Byte;
    typedef variant_detail::V::WChar      WChar;
    typedef variant_detail::V::Str        Str;
    typedef variant_detail::V::WStr       WStr;
    typedef variant_detail::V::Vec        Vec;
    typedef variant_detail::V::Map        Map;
    typedef variant_detail::V::Blob       Blob;
    typedef variant_detail::V::List       List;

}//namespace



//------------------------------------------------------------------------------------------------------//

#ifdef TEST_VARIANT_COMPARE_000
TEST(Variant, compare_000)
{
    Variant v1,v2;
    EXPECT_EQ(true, v1==v2 );
}
#endif // TEST_VARIANT_COMPARE_000

#ifdef TEST_VARIANT_COMPARE_001
TEST(Variant, compare_001)
{
    Variant v1,v2;
    v1 = 10;
    EXPECT_EQ(false, v1==v2 );
}
#endif // TEST_VARIANT_COMPARE_001

#ifdef TEST_VARIANT_COMPARE_002
TEST(Variant, compare_002)
{
//     const int v1 = 10;
//     Variant   v2 = v1;
//     const bool eq = (v1 == v2);
// 
//     EXPECT_EQ(true, eq );
}
#endif // TEST_VARIANT_COMPARE_002

#ifdef TEST_VARIANT_COMPARE_003
TEST(Variant, compare_003)
{
    const int v1 = 10;
    Variant   v2 = v1;
    const bool eq = (v2 == v1);
    EXPECT_EQ(true, eq );
}
#endif // TEST_VARIANT_COMPARE_003

#ifdef TEST_VARIANT_COMPARE_004
TEST(Variant, compare_004)
{
    Variant v1;
    v1[0]=0;
    v1[1]='c';
    v1[2]=true;
    Variant v2(v1);
    const bool eq = (v2 == v1);
    EXPECT_EQ(true, eq );
}
#endif // TEST_VARIANT_COMPARE_004

#ifdef TEST_VARIANT_COMPARE_005
TEST(Variant, compare_005)
{
    Variant v1;
    v1[0]=0;
    v1[1]='c';
    v1[2]=true;
    Variant v2(v1);
    v2[3] = v1;
    const bool eq = (v2 != v1);
    EXPECT_EQ(true, eq );
}
#endif // TEST_VARIANT_COMPARE_005

#ifdef TEST_VARIANT_COMPARE_006
TEST(Variant, compare_006)
{
    Variant v1;
    v1["0"]=0;
    v1["1"]='c';
    v1["2"]=true;
    Variant v2(v1);

    EXPECT_EQ(true, v2==v1 );

    v2["3"] = v1;

    v1!=v2;

    EXPECT_EQ(true, v1!=v2 );
}
#endif // TEST_VARIANT_COMPARE_006

#ifdef TEST_VARIANT_COMPARE_007
#endif // TEST_VARIANT_COMPARE_007

#ifdef TEST_VARIANT_COMPARE_008
#endif // TEST_VARIANT_COMPARE_008

#ifdef TEST_VARIANT_COMPARE_009
#endif // TEST_VARIANT_COMPARE_009

#ifdef TEST_VARIANT_COMPARE_010
#endif // TEST_VARIANT_COMPARE_010

#ifdef TEST_VARIANT_COMPARE_011
#endif // TEST_VARIANT_COMPARE_011

#ifdef TEST_VARIANT_COMPARE_012
#endif // TEST_VARIANT_COMPARE_012

#ifdef TEST_VARIANT_COMPARE_013
#endif // TEST_VARIANT_COMPARE_013

#ifdef TEST_VARIANT_COMPARE_014
#endif // TEST_VARIANT_COMPARE_014

#ifdef TEST_VARIANT_COMPARE_015
#endif // TEST_VARIANT_COMPARE_015

#ifdef TEST_VARIANT_COMPARE_016
#endif // TEST_VARIANT_COMPARE_016

#ifdef TEST_VARIANT_COMPARE_017
#endif // TEST_VARIANT_COMPARE_017

#ifdef TEST_VARIANT_COMPARE_018
#endif // TEST_VARIANT_COMPARE_018

#ifdef TEST_VARIANT_COMPARE_019
#endif // TEST_VARIANT_COMPARE_019

#ifdef TEST_VARIANT_COMPARE_020
#endif // TEST_VARIANT_COMPARE_020

#ifdef TEST_VARIANT_COMPARE_021
#endif // TEST_VARIANT_COMPARE_021

#ifdef TEST_VARIANT_COMPARE_022
#endif // TEST_VARIANT_COMPARE_022

#ifdef TEST_VARIANT_COMPARE_023
#endif // TEST_VARIANT_COMPARE_023

#ifdef TEST_VARIANT_COMPARE_024
#endif // TEST_VARIANT_COMPARE_024

#ifdef TEST_VARIANT_COMPARE_025
#endif // TEST_VARIANT_COMPARE_025

#ifdef TEST_VARIANT_COMPARE_026
#endif // TEST_VARIANT_COMPARE_026

#ifdef TEST_VARIANT_COMPARE_027
#endif // TEST_VARIANT_COMPARE_027

#ifdef TEST_VARIANT_COMPARE_028
#endif // TEST_VARIANT_COMPARE_029

#ifdef TEST_VARIANT_COMPARE_030
#endif // TEST_VARIANT_COMPARE_030

#ifdef TEST_VARIANT_COMPARE_031
#endif // TEST_VARIANT_COMPARE_031

#ifdef TEST_VARIANT_COMPARE_032
#endif // TEST_VARIANT_COMPARE_032

#include "default_warning.h"

#endif



